{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "83737bf2",
   "metadata": {},
   "source": [
    "# Explaining a model that uses standardized features\n",
    "\n",
    "Standardizing features is a common preprocessing step for many ML pipelines. When explaining a model that uses standardized features it is often desirable to get explanations using the original input features (not their standardized versions). This notebook shows how to do that using the property that any univariate transformation applied to a model's inputs does not effect the Shapley values for the model (note that multi-variate transformations like PCA decompositions do change the Shapley values so this trick does not apply there)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8aa3f573",
   "metadata": {},
   "source": [
    "## Build a linear model that uses standardized features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "30a9847c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-07-21T12:09:04.351693171Z",
     "start_time": "2023-07-21T12:09:02.974889637Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import nbtest\n",
    "import sklearn\n",
    "\n",
    "import shap\n",
    "\n",
    "# get standardized data\n",
    "X, y = shap.datasets.california()\n",
    "scaler = sklearn.preprocessing.StandardScaler().set_output(transform=\"pandas\")\n",
    "X_std = scaler.fit_transform(X)\n",
    "\n",
    "# train the linear model\n",
    "model = sklearn.linear_model.LinearRegression().fit(X_std, y)\n",
    "\n",
    "# explain the model's predictions using SHAP\n",
    "explainer = shap.LinearExplainer(model, X_std)\n",
    "shap_values = explainer(X_std)\n",
    "\n",
    "# visualize the model's dependence on the first feature\n",
    "shap.plots.scatter(shap_values[:, 0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3b5e1684",
   "metadata": {},
   "outputs": [],
   "source": [
    "# We test the additivity of the SHAP values against the model's predictions.\n",
    "\n",
    "# This test only runs in the continuous integration pipeline\n",
    "# in order to run manually uncomment the following two lines:\n",
    "# import os\n",
    "# os.environ['NBTEST_RUN_ASSERTS'] = '1'\n",
    "\n",
    "predicted_value = model.predict(X_std)\n",
    "\n",
    "nbtest.assert_allclose((shap_values.base_values + shap_values.values.sum(1)), predicted_value)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5bf0c27c",
   "metadata": {},
   "source": [
    "## Convert the explanation to the original feature space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4be65152",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-07-21T12:09:04.601225072Z",
     "start_time": "2023-07-21T12:09:04.488322017Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# we convert back to the original data\n",
    "# (note we can do this because X_std is a set of univariate transformations of X)\n",
    "shap_values.data = X.values\n",
    "\n",
    "# visualize the model's dependence on the first feature again, now in the new original feature space\n",
    "shap.plots.scatter(shap_values[:, 0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "017131fd",
   "metadata": {},
   "source": [
    "<hr>\n",
    "Have an idea for more helpful examples? Pull requests that add to this documentation notebook are encouraged!"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
